home *** CD-ROM | disk | FTP | other *** search
/ Deutsche Edition 1 / Deutsche Edition 1.iso / amok / amok_lha / amok44.lha / GRandom / grandom.mod < prev    next >
Text File  |  1993-08-15  |  902b  |  48 lines

  1. (**********************************************************************
  2.  
  3.     :Program.    GRandom
  4.     :Contents.   Erzeugt eine standardnormalverteilte Zufallszahl
  5.     :Author.     Steffen Reith
  6.     :Address.    Hessenstr. 64, D-8700 Würzburg
  7.     :Language.   Modula-2
  8.     :Translator. M2Amiga A+L V3.2d
  9.  
  10. **********************************************************************)
  11. IMPLEMENTATION MODULE GRandom;
  12.  
  13. FROM MathLib0     IMPORT ln,sqrt;
  14. FROM RandomNumber IMPORT PutSeed,Random;
  15.  
  16. VAR seed[0DFF006H]:LONGINT;
  17.  
  18. PROCEDURE GRND():REAL;
  19.  
  20. VAR p:REAL;
  21.  
  22. PROCEDURE Transform(p:REAL):REAL;
  23.  
  24. CONST  a0=2.31;b1=0.99;
  25.        a1=0.27;b2=0.045;
  26.  
  27. VAR t,h:REAL;
  28.  
  29. BEGIN
  30.  t:=sqrt(ln(1.0/(p*p)));
  31.  h:=(a0+a1*t)/(1.0+t*(b1+b2*t));
  32.  RETURN t-h
  33. END Transform;
  34.  
  35. BEGIN
  36.  p:=Random();
  37.  IF p<=0.5 THEN
  38.   RETURN Transform(p)
  39.  ELSE
  40.   p:=1.0-p;
  41.   RETURN -1.0*Transform(p)
  42.  END
  43. END GRND;
  44.  
  45. BEGIN
  46.  PutSeed(ABS(seed));
  47. END GRandom.
  48.